With advances in cloud computing, enterprises have the option of deploying applications in a public cloud open for public use, a private cloud built for exclusive use by the enterprise, or a hybrid of the public and private clouds. The applications are typically run as virtual machines (“VMs”) that enable cloud managers to dynamically reallocate VMs based on demand. For example, a cloud computing facility that serves a large number of users during daytime business hours with a first VM may reallocate the same resources for a second VM used by nighttime customers located elsewhere in the world. A private cloud enables an enterprise to control data, security, and quality of service. A private cloud may be built and managed within the facilities of the enterprise or may be hosted externally by a private cloud service provider. In contrast, a public cloud is maintained by a public cloud provider that offers use of resources to a number of enterprises as a service. Public clouds typically enable enterprises to control cost by scaling up or down use of public cloud services and resources based on demand, and the enterprise reduces operational risk and cost of having to maintain private cloud resources.
Hybrid clouds are a combination of public and private cloud models. Hybrid clouds are typically used to provide a private cloud with additional resources offered by a public cloud. For example, an enterprise that typically relies on a private cloud may observe a workload spike at a particular time of day or month. In order to prevent interruptions in services, the enterprise uses the resources offered by a public cloud provider to handle the workload spike.
In recent years, many of the larger public cloud providers have begun offering resources and other services at competitive prices. Also, enterprises that maintain their own private clouds are bearing different costs of operations depending on the hardware they use, geographical location, and other factors. As a result, private cloud IT managers often have a difficult task of deciding which VMs to continue running in the private cloud and which VMs to move to a public cloud in order to lower costs. In particular, IT managers may want to know if they are currently spending more than the industry average by running certain VMs in their private cloud and want recommendations for improving the cost efficiency of each VM.